package org.gd.hellojavacore.patterns.singleton;

import org.gd.hellojavacore.patterns.CreationalPattern;

/**
 <pre>

 Цель

 Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.
 Существенно то, что можно пользоваться именно экземпляром класса, так как при этом во многих
 случаях становится доступной более широкая функциональность. Например, к описанным компонентам класса
 можно обращаться через интерфейс, если такая возможность поддерживается языком.

 Плюсы

 контролируемый доступ к единственному экземпляру.
 Минусы

 глобальные объекты могут быть вредны для объектного программирования, в некоторых случаях приводя к созданию
 немасштабируемого проекта;
 усложняет написание модульных тестов и следование TDD.

 Применение

 должен быть ровно один экземпляр некоторого класса, легко доступный всем клиентам;
 единственный экземпляр должен расширяться путем порождения подклассов, и клиентам нужно иметь возможность
 работать с расширенным экземпляром без модификации своего кода

 </pre>
 */
public interface Singleton extends CreationalPattern {
}
